Add GDK button mask for NS dragging events. (create_scroll_event): Remove
authorRichard Hult <richard@imendio.com>
Tue, 15 Aug 2006 20:13:13 +0000 (20:13 +0000)
committerRichard Hult <rhult@src.gnome.org>
Tue, 15 Aug 2006 20:13:13 +0000 (20:13 +0000)
2006-08-15  Richard Hult  <richard@imendio.com>

* gdk/quartz/gdkevents-quartz.c: (get_event_mask_from_ns_event):
Add GDK button mask for NS dragging events.
(create_scroll_event): Remove obsolete comment.
(_gdk_quartz_get_current_event_mask), (gdk_event_translate): Keep
track of the latest event mask here...

* gdk/quartz/gdkwindow-quartz.c:
(_gdk_windowing_window_get_pointer): And use it here. Patch from
Kristian Rietveld.
(gdk_window_quartz_update_idle): Rename to make things clearer.

ChangeLog
ChangeLog.pre-2-10
gdk/quartz/gdkevents-quartz.c
gdk/quartz/gdkprivate-quartz.h
gdk/quartz/gdkwindow-quartz.c

index 917fa8fffc1229f1e266ab9ef42c20fd1c21a621..e71b326f81a5db19a4235a867a1e7a05445ac944 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2006-08-15  Richard Hult  <richard@imendio.com>
+
+       * gdk/quartz/gdkevents-quartz.c: (get_event_mask_from_ns_event): 
+       Add GDK button mask for NS dragging events.
+       (create_scroll_event): Remove obsolete comment.
+       (_gdk_quartz_get_current_event_mask), (gdk_event_translate): Keep
+       track of the latest event mask here...
+
+       * gdk/quartz/gdkwindow-quartz.c: 
+       (_gdk_windowing_window_get_pointer): And use it here. Patch from
+       Kristian Rietveld.
+       (gdk_window_quartz_update_idle): Rename to make things clearer.
+
 2006-08-15  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkprintoperationpreview.c: 
index 917fa8fffc1229f1e266ab9ef42c20fd1c21a621..e71b326f81a5db19a4235a867a1e7a05445ac944 100644 (file)
@@ -1,3 +1,16 @@
+2006-08-15  Richard Hult  <richard@imendio.com>
+
+       * gdk/quartz/gdkevents-quartz.c: (get_event_mask_from_ns_event): 
+       Add GDK button mask for NS dragging events.
+       (create_scroll_event): Remove obsolete comment.
+       (_gdk_quartz_get_current_event_mask), (gdk_event_translate): Keep
+       track of the latest event mask here...
+
+       * gdk/quartz/gdkwindow-quartz.c: 
+       (_gdk_windowing_window_get_pointer): And use it here. Patch from
+       Kristian Rietveld.
+       (gdk_window_quartz_update_idle): Rename to make things clearer.
+
 2006-08-15  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkprintoperationpreview.c: 
index c389a5099b11987b23e46fab08af7230161ccddb..68aa0198199ad9eee75fc44fd5fef165be52bd09 100644 (file)
@@ -637,11 +637,13 @@ get_event_mask_from_ns_event (NSEvent *nsevent)
        */
       return GDK_SCROLL_MASK | GDK_BUTTON_PRESS_MASK;
     case NSLeftMouseDragged:
-      return GDK_POINTER_MOTION_MASK|GDK_POINTER_MOTION_HINT_MASK |
-            GDK_BUTTON_MOTION_MASK|GDK_BUTTON1_MOTION_MASK;
+      return (GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
+             GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | 
+             GDK_BUTTON1_MASK);
     case NSRightMouseDragged:
-      return GDK_POINTER_MOTION_MASK|GDK_POINTER_MOTION_HINT_MASK |
-            GDK_BUTTON_MOTION_MASK|GDK_BUTTON3_MOTION_MASK;
+      return (GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
+             GDK_BUTTON_MOTION_MASK | GDK_BUTTON3_MOTION_MASK | 
+             GDK_BUTTON3_MASK);
     case NSOtherMouseDragged:
       {
        GdkEventMask mask;
@@ -651,7 +653,8 @@ get_event_mask_from_ns_event (NSEvent *nsevent)
                GDK_BUTTON_MOTION_MASK);
 
        if (convert_mouse_button_number ([nsevent buttonNumber]) == 2)
-         mask |= GDK_BUTTON2_MOTION_MASK;
+         mask |= (GDK_BUTTON2_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | 
+                  GDK_BUTTON2_MASK);
 
        return mask;
       }
@@ -756,7 +759,7 @@ get_keyboard_modifiers_from_nsevent (NSEvent *nsevent)
     modifiers |= GDK_CONTROL_MASK;
   if (nsflags & NSCommandKeyMask)
     modifiers |= GDK_MOD1_MASK;
-  
+
   /* FIXME: Support GDK_BUTTON_MASK */
 
   return modifiers;
@@ -1297,8 +1300,6 @@ create_scroll_event (GdkWindow *window, NSEvent *nsevent, GdkScrollDirection dir
                                      &event->scroll.x_root,
                                      &event->scroll.y_root);
 
-  /* FIXME event->state; */
-  /* FIXME event->is_hint; */
   event->scroll.direction = direction;
   event->scroll.device = _gdk_display->core_pointer;
   
@@ -1377,6 +1378,12 @@ create_key_event (GdkWindow *window, NSEvent *nsevent, GdkEventType type)
   return event;
 }
 
+static GdkEventMask current_mask = 0;
+GdkEventMask _gdk_quartz_get_current_event_mask (void)
+{
+  return current_mask;
+}
+
 static gboolean
 gdk_event_translate (NSEvent *nsevent)
 {
@@ -1438,7 +1445,9 @@ gdk_event_translate (NSEvent *nsevent)
 
   if (result == GDK_FILTER_REMOVE)
     return TRUE;
-  
+
+  current_mask = get_event_mask_from_ns_event (nsevent);
+
   switch ([nsevent type])
     {
     case NSLeftMouseDown:
index 3f8ec8e678815848e1050da9ac0137a0ceddfd74..a1772ca71ba55dc30a118be034b78f332a4f4cdf 100644 (file)
@@ -131,6 +131,8 @@ void _gdk_quartz_send_map_events (GdkWindow *window);
 GdkEventType _gdk_quartz_key_event_type  (NSEvent   *event);
 gboolean     _gdk_quartz_key_is_modifier (guint      keycode);
 
+GdkEventMask _gdk_quartz_get_current_event_mask (void);
+
 extern GdkWindow *_gdk_quartz_keyboard_grab_window;
 extern GdkWindow *_gdk_quartz_pointer_grab_window;
 
index 897a352ff935901b9e3fc9e62f38700fdd825b1f..b3428f715210f4266c9e620a6821db5cd6419001 100644 (file)
@@ -289,7 +289,7 @@ gdk_window_quartz_process_all_updates (void)
 }
 
 static gboolean
-gdk_window_update_idle (gpointer data)
+gdk_window_quartz_update_idle (gpointer data)
 {
   GDK_THREADS_ENTER ();
   gdk_window_quartz_process_all_updates ();
@@ -325,7 +325,7 @@ gdk_window_impl_quartz_invalidate_maybe_recurse (GdkPaintable *paintable,
 
       if (update_idle == 0)
        update_idle = g_idle_add_full (GDK_PRIORITY_REDRAW,
-                                      gdk_window_update_idle, NULL, NULL);
+                                      gdk_window_quartz_update_idle, NULL, NULL);
     }
 }
 
@@ -1222,12 +1222,14 @@ _gdk_windowing_window_get_pointer (GdkDisplay      *display,
     {
       point = [NSEvent mouseLocation];
       y_tmp = _gdk_quartz_get_inverted_screen_y (point.y);
+      *mask = _gdk_quartz_get_current_event_mask ();
     }
   else
     {
       NSWindow *nswindow = impl->toplevel;
       point = [nswindow mouseLocationOutsideOfEventStream];
       y_tmp = impl->height - point.y;
+      *mask = _gdk_quartz_get_current_event_mask ();
     }
   x_tmp = point.x;
 
@@ -1239,10 +1241,8 @@ _gdk_windowing_window_get_pointer (GdkDisplay      *display,
       private = private->parent;
     }
 
-  /* FIXME: Implement mask. */
   *x = x_tmp;
   *y = y_tmp;
-  *mask = 0;
 
   return _gdk_quartz_find_child_window_by_point (window,
                                                 point.x, point.y,